package com.zhaoc.ioc.container;
/** 
 * <br>类 名: ApplicationContext
 * <br>描 述: IOC 容器接口 获取系统中对象创建的控制权,需要注入* 获取功能
 * <br>作 者: zhaoc
 * <br>创 建: 2015年8月14日
 * <br>版 本: v1.0.0
 * <br>
 * <br>历 史: (版本) 作者 时间 注释 
 */
public interface ApplicationContext {
	
	/**
	 *
	 * <br>注入*
	 * <br> 向容器注入要管理的 类对象* 需要接口类型面向
	 * @param interfaceType 接口类型，面向抽象设计概念 一个接口类型可以有很多 类对象创建的实例
	 * @param name 注册名称，此处尽量为全局唯一，对应的获取对象 时 接口类型与注册名称 为联合主键 不可以重复
	 * @param classType 实现接口的类的 类对象类型
	 * @param type 创建方式 可选 RPOTOTYOE 原型 和 SINGLETON 单例模式
	 */
	<T> void inject(Class<T> interfaceType, String name, Class<? extends T> classType, ScopeTypeEnum type);
	
	/**
	 * 
	 * <br>向容器获得实例
	 * <br> 根据 接口类类型 与 注册名的 联合主键 全局唯一 获取实例
	 * @param interfaceType 接口类类型
	 * @param name 注入容器时 的 注册名
	 * @return 接口类型的实例对象
	 */
	<T> T getBean(Class<T> interfaceType, String name);
	
	
}